package com.ly.heart.domain;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ly.common.core.domain.BaseVo;
import lombok.Data;
import com.ly.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 金蝶-财务-付款单对象 erp_king_finance_pay_info
 *
 * @author wutao
 * @date 2024-06-19
 */
@TableName ( "erp_king_finance_pay_info" )
@ApiModel ( value = "erp_king_finance_pay_info对象", description = "金蝶-财务-付款单" )
@Data
public class KingFinancePayEntity extends BaseVo {
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId ( value = "id", type = IdType.INPUT )
    private String id;

    /**
     * 单据类型,select走字典
     */
    @ApiModelProperty ( "所属公司，当前登录公司" )
    @TableField ( "dept_id" )
    @Excel ( name = "所属公司，当前登录公司" )
    private String deptId;

    /**
     * 单据类型,select走字典
     */
    @ApiModelProperty ( "应付票据Id" )
    @TableField ( "pay_bill_id" )
    @Excel ( name = "应付票据Id" )
    private String payBillId;


    /**
     * 单据类型,select走字典
     */
    @ApiModelProperty ( "单据类型编码" )
    @TableField ( "doc_type_code" )
    @Excel ( name = "单据类型" )
    private String docTypeCode;

    /**
     * 单据类型,select走字典
     */
    @ApiModelProperty ( "单据编号" )
    @TableField ( "doc_no" )
    @Excel ( name = "单据编号" )
    private String docNo;

    /**
     * 收款单位类型,select走字典
     */
    @ApiModelProperty ( "收款单位类型：" +
            "客户：BD_Customer；" +
            "供应商：BD_Supplier；" +
            "部门：BD_Department；" +
            "员工：BD_Empinfo；" +
            "其他往来单位：FIN_OTHERS；" +
            "组织机构：ORG_Organizations；" +
            "银行：BD_BANK" )
    @TableField ( "receipt_dept_type" )
    @Excel ( name = "收款单位类型,select走字典" )
    private String receiptDeptType;

    /**
     * 付款组织,dialog走接口,当前公司
     */
    @ApiModelProperty ( "付款组织,dialog走接口,当前公司" )
    @TableField ( "pay_dept_id" )
    @Excel ( name = "付款组织,dialog走接口,当前公司" )
    private String payDeptId;

    /**
     * 收款单位,dialog走接口
     */
    @ApiModelProperty ( "收款单位,根据收款单位类型选择不同类型的单位" )
    @TableField ( "receipt_dept_id" )
    @Excel ( name = "收款单位,dialog走接口" )
    private String receiptDeptId;

    /**
     * 结算组织，当前登录公司
     */
    @ApiModelProperty ( "结算组织，当前登录公司" )
    @TableField ( "settlement_dept_id" )
    @Excel ( name = "结算组织，当前登录公司" )
    private String settlementDeptId;

    @ApiModelProperty ( "采购组织" )
    @TableField ( "procure_company_id" )
    @Excel ( name = "采购组织" )
    private String procureCompanyId;

    /**
     * 业务时间
     */
    @ApiModelProperty ( "业务时间" )
    @TableField ( "business_time" )
    @JsonFormat ( pattern = "yyyy-MM-dd" )
    @Excel ( name = "业务时间", width = 30, dateFormat = "yyyy-MM-dd" )
    private Date businessTime;

    /**
     * 币别,select走字典
     */
    @ApiModelProperty ( "币别编码" )
    @TableField ( "king_base_currency_code" )
    @Excel ( name = "币别,select走字典" )
    private String kingBaseCurrencyCode;

    /**
     * 币别,select走字典
     */
    @ApiModelProperty ( "往来单位类型" +
            "客户：BD_Customer；" +
            "供应商：BD_Supplier；" +
            "部门：BD_Department；" +
            "员工：BD_Empinfo；" +
            "其他往来单位：FIN_OTHERS；" +
            "组织机构：ORG_Organizations；" +
            "银行：BD_BANK" )
    @TableField ( "transaction_company_type" )
    @Excel ( name = "往来单位类型" )
    private String transactionCompanyType;

    /**
     * 应付金额
     */
    @ApiModelProperty ( "应付金额" )
    @TableField ( "cope_money" )
    @Excel ( name = "应付金额" )
    private String copeMoney;

    /**
     * 实付金额
     */
    @ApiModelProperty ( "实付金额" )
    @TableField ( "actual_money" )
    @Excel ( name = "实付金额" )
    private String actualMoney;

    /**
     * 采购部门
     */
    @ApiModelProperty ( "采购部门" )
    @TableField ( "procure_dept_id" )
    @Excel ( name = "采购部门" )
    private String procureDeptId;

    /**
     * 往来单位,dialog走字典
     */
    @ApiModelProperty ( "往来单位" )
    @TableField ( "transaction_company_id" )
    @Excel ( name = "往来单位,dialog走字典" )
    private String transactionCompanyId;

    @ApiModelProperty ( "期望付款日期" )
    @TableField ( "expected_pay_time" )
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel ( name = "期望付款日期" )
    private Date expectedPayTime;

    @ApiModelProperty ( "采购员" )
    @TableField ( "purchaser_user_id" )
    @Excel ( name = "采购员" )
    private String purchaserUserId;

    @ApiModelProperty ( "备注" )
    @TableField ( "remarks" )
    @Excel ( name = "备注" )
    private String remarks;

    /**
     * 源单类型
     */
    @ApiModelProperty ( "源单类型：\n" +
            "1、手动创建\n" +
            "2、应付单下推付款单\n" +
            "3、其他应付单下推付款单\n" +
            "4、工程下推付款单\n" +
            "5、应付票据审核后自动生成；" +
            "6、应收票据背书后生成" )
    @TableField ( "source_doc_type" )
    @Excel ( name = "源单类型" )
    private Integer sourceDocType;

    @TableField ( "state" )
    private String state;

    @ApiModelProperty ( "已核销金额" )
    @TableField ( "verified_amount" )
    private String verifiedAmount;

    @ApiModelProperty ( "汇率类型" )
    @TableField ( "rate_type" )
    private String rateType;

    @ApiModelProperty ( "结算汇率类型" )
    @TableField ( "settlement_rate_type" )
    private String settlementRateType;

    @ApiModelProperty ( "结算汇率" )
    @TableField ( "settlement_rate" )
    private String settlementRate;

    @ApiModelProperty ( "汇率" )
    @TableField ( "rate" )
    private String rate;

    @ApiModelProperty ( "结算币别" )
    @TableField ( "settlement_currency_code" )
    private String settlementCurrencyCode;

    @ApiModelProperty ( "付款金额" )
    @TableField ( "pay_amount" )
    private String payAmount;

    @ApiModelProperty ( "多收款人" )
    @TableField ( "is_multiple_payees" )
    private Boolean isMultiplePayees;

    @ApiModelProperty ( "付款金额本位币" )
    @TableField ( "pay_amount_currency" )
    private String payAmountCurrency;

    @ApiModelProperty ( "应付金额本位币" )
    @TableField ( "cope_money_currency" )
    private String copeMoneyCurrency;

    @ApiModelProperty ( "实付金额本位币" )
    @TableField ( "actual_money_currency" )
    private String actualMoneyCurrency;

    @ApiModelProperty ( "流程实例id" )
    @TableField ( "instance_id" )
    private String instanceId;

    @ApiModelProperty ( "是否已推" )
    @TableField ( "is_send" )
    private Integer isSend;

    /**
     * 创建者
     */
    @TableField ( "create_by" )
    private String createBy;

    /**
     * 创建时间
     */
    @TableField ( "create_time" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新者
     */
    @TableField ( "update_by" )
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField ( "update_time" )
    private Date updateTime;

    /**
     * 是否可用
     */
    @ApiModelProperty ( "是否可用" )
    @TableField ( "is_used" )
    @Excel ( name = "是否可用" )
    private Integer isUsed;

    @ApiModelProperty ( "单据类型编码名称" )
    @TableField ( exist = false )
    private String docTypeName;

    @ApiModelProperty ( "付款组织名称" )
    @TableField ( exist = false )
    private String payDeptName;

    @ApiModelProperty ( "结算组织名称" )
    @TableField ( exist = false )
    private String settlementDeptName;

    @ApiModelProperty ( "采购组织名称" )
    @TableField ( exist = false )
    private String procureCompanyName;

    @ApiModelProperty ( "采购部门名称" )
    @TableField ( exist = false )
    @Excel ( name = "采购部门" )
    private String procureDeptName;

    @ApiModelProperty ( "业务type" )
    @TableField ( exist = false )
    private String businessType;

    @ApiModelProperty ( "流程模型id" )
    @TableField ( exist = false )
    private String modelId;

    @ApiModelProperty ( "主表结算币别名称" )
    @TableField ( exist = false )
    private String settlementCurrencyName;

    @ApiModelProperty ( "采购员名称" )
    @TableField ( exist = false )
    @Excel ( name = "采购员" )
    private String purchaserUserName;

    /**
     * 以下编码送金蝶
     */
    @ApiModelProperty ( "付款组织编码，送金额" )
    @TableField ( exist = false )
    private String payDeptCode;

    @ApiModelProperty ( "收款单位编码，送金额" )
    @TableField ( exist = false )
    private String receiptDeptCode;

    @ApiModelProperty ( "采购部门编码，送金额" )
    @TableField ( exist = false )
    private String procureDeptCode;

    @ApiModelProperty ( "往来单位编码，送金额" )
    @TableField ( exist = false )
    private String transactionCompanyCode;

    @ApiModelProperty ( "采购员编码，送金额" )
    @TableField ( exist = false )
    private String purchaserUserCode;

    @ApiModelProperty ( "付款单的退款金额" )
    @TableField ( exist = false )
    private String refundAmount;

    @ApiModelProperty ( "明细行Id" )
    @TableField ( exist = false )
    private String payDetailId;

    @ApiModelProperty ( "明细行结算类型编码" )
    @TableField ( exist = false )
    private String settlementTypeCode;

    @ApiModelProperty ( "明细行结算类型名称" )
    @TableField ( exist = false )
    private String kingSettlementTypeName;

    @ApiModelProperty ( "明细行付款用途编码" )
    @TableField ( exist = false )
    private String payReceiptPurposeCode;

    @ApiModelProperty ( "明细行付款用途名称" )
    @TableField ( exist = false )
    private String payPurposeName;

    @ApiModelProperty ( "明细行预收项目类型，1，供应商；2：采购订单" )
    @TableField ( exist = false )
    private String prepaidItemType;

    @ApiModelProperty ( "明细行源单编码" )
    @TableField ( exist = false )
    private String sourceNo;

    @ApiModelProperty ( "明细行采购订单编码" )
    @TableField ( exist = false )
    private String orderCode;

    @ApiModelProperty ( "明细行应付金额" )
    @TableField ( exist = false )
    private String detailCopeMoney;

    @ApiModelProperty ( "明细行实付金额" )
    @TableField ( exist = false )
    private String detailActualMoney;

    @ApiModelProperty ( "明细行现金折扣" )
    @TableField ( exist = false )
    private String detailCashDiscount;

    @ApiModelProperty ( "明细行手续费" )
    @TableField ( exist = false )
    private String detailHandlingFees;

    @ApiModelProperty ( "明细行长短款" )
    @TableField ( exist = false )
    private String detailLongShortPay;

    @ApiModelProperty ( "明细行折后金额" )
    @TableField ( exist = false )
    private String detailDiscountedMoney;

    @ApiModelProperty ( "明细行我方银行账号" )
    @TableField ( exist = false )
    private String detailBankNumber;

    @ApiModelProperty ( "明细行结算号" )
    @TableField ( exist = false )
    private String detailSettlementNumber;

    @ApiModelProperty ( "明细行备注" )
    @TableField ( exist = false )
    private String detailRemarks;

    @ApiModelProperty ( "明细行交易时间" )
    @TableField ( exist = false )
    private String detailTransactionTime;

    @ApiModelProperty ( "明细行费用项目编码" )
    @TableField ( exist = false )
    private String detailFeeCode;

    @ApiModelProperty ( "明细行费用项目名称" )
    @TableField ( exist = false )
    private String detailFeeName;

    @ApiModelProperty ( "明细行费用承担部门名称" )
    @TableField ( exist = false )
    private String detailFeeBearDeptName;

    @ApiModelProperty ( "明细行物料编码" )
    @TableField ( exist = false )
    private String detailMaterialCode;

    @ApiModelProperty ( "明细行物料名称" )
    @TableField ( exist = false )
    private String detailMaterialName;

    @ApiModelProperty ( "明细行含税单价" )
    @TableField ( exist = false )
    private String detailTaxPrice;

    @ApiModelProperty ( "明细行预估税率" )
    @TableField ( exist = false )
    private String detailExpectTaxRate;

    @ApiModelProperty ( "明细行税额" )
    @TableField ( exist = false )
    private String detailTaxRate;

    @ApiModelProperty ( "明细行不含税单价" )
    @TableField ( exist = false )
    private String detailNoTaxAmount;

    @ApiModelProperty ( "明细行数量" )
    @TableField ( exist = false )
    private String detailNum;

    @ApiModelProperty ( "明细行核销金额" )
    @TableField ( exist = false )
    private String detailVerifiedAmount;

    @ApiModelProperty ( "明细行创建人姓名" )
    @TableField ( exist = false )
    private String createName;

    @ApiModelProperty ( "明细行币别名称" )
    @TableField ( exist = false )
    private String currencyName;

    @ApiModelProperty ( "往来单位名称" )
    @TableField ( exist = false )
    private String transactionCompanyName;

    @ApiModelProperty ( "收款单位名称" )
    @TableField ( exist = false )
    private String receiptCompanyName;

    //计算值
    @ApiModelProperty ( "已退金额" )
    @TableField ( exist = false )
    private String totalRefundAmount;

}
